1. Statement of the Technical Field
The present invention relates to field of software development and more particularly to the model driven development of a software application.
2. Description of the Related Art
Modern software systems have become increasingly pervasive and open-ended, and are expected to deliver critical computing services in a dependable manner across multiple, heterogeneous computing environments. To better manage the complexity of developing modern software systems, software development strategies can be employed which raise the level of abstraction at which software systems are conceived, implemented and evolved. Model-driven development (MDD) represents one such software development strategy in which models are the primary artifacts of software development.
Modeling complex applications has several general benefits which can include a better understanding of the business or engineering situation at hand, the construction and design of application architectures, and the creation of visualizations of code and other forms of implementation. In this regard, the essence of modeling is abstraction and any visualization of code is indeed an abstraction in that application information can be selectively exposed while details deemed unnecessary or unwanted can be suppressed. Nevertheless, the terms “code model”, “implementation model” or “platform-specific model” (PSM) are often used to qualify such abstractions from a higher-level, platform independent model (PIM) that does not have such direct relationships to program code.
In conventional MDD, visual models can be created utilizing model constructs or model types. The visual models can be created from a methodological process that often begins with application requirements and culminates with a high-level architectural design model. Developers can create a detailed design model from which skeletal code can be generated to an integrated development environment. The integrated development environment, in turn, can be used to complete the detailed coding. Any changes to the code that affect the design model can be synchronized back into the model. Likewise, any model changes can be synchronized into the existing code.
Modern trends in MDD include software development tools and techniques that support the vision of the Object Management Group as framed by the “Model Driven Architecture” (MDA). The MDA advocates an approach in which models of software that abstract over technology-specific details are systematically transformed to deployable technology-specific implementations. In this regard, a transformation defines changes that are applied to a source model to produce a target model. While the models enjoy specific relationships between one another, the transformation steps are often a discontinuous jump forward rather than a specifiable mechanical transformation. The discontinuous jump is most noticeable in the early stages of design refinement and solution exploration where fundamental decisions are made by the software engineer in order to satisfy solution requirements.
Systematic support for model transformations is considered to be critical to the success of the MDA. Often referred to as a model-to-model transformation, the source and target models can be based upon a meta-model like the Unified Modeling Language (UML), including customer specific meta-models. At present, model-to-model transformations are manually driven and can require substantial expertise and development resources to perfect. Yet, as MDD matures, it will be desirable to automate the generation of a PSM from a PIM such that the transformation can fit the mold of a code generator.
Part of automating a model-to-model transformation can include the traversal of a source model hierarchy to apply transformation rules. Yet, some models can be highly complex and can include substantial number of elements and element-kinds. Consequently, defining transformation rules for the entire hierarchy of the source model can be so cumbersome as to defeat any efficiencies gained through the automation of the model-to-model transformation.